A network appliance may run one of a variety of different operating systems. A main component of an operating system is the kernel. The kernel provides a bridge between applications and the data processing done at the hardware level. The kernel manages the various system resources, such as, the Central Processing Unit (CPU), system memory, and Input/Output (I/O) resources. Accordingly, the applications running on the network appliance utilize the various kernels via system calls to process data, read and write to memory, and to utilize I/O devices. Similarly, a network appliance may run a variety of applications. Applications running on a network appliance may vary from traffic metering applications to event reporting applications.
In the modern environment, network appliances are used in a variety of remote locations, such as, Network Operation Centers (NOC), server farms, commercial locations, as well as residential locations. The most recently released version of kernels and applications are installed in network devices prior to being installed in these various remote locations. However, the improvement of the kernels and applications continue after a network appliance is installed. Thus, resulting in installed network appliances with out-dated kernels and applications located at a variety of remote locations.
Similarly, a network appliance may be sold to an original equipment manufacturer (OEM). During the manufacturing process, a version of the kernel and application software is installed. However, many months may pass between the appliance being produced at the factory and the appliance being sold by the OEM. During this time, a new version of the kernel and application software may be released. Thus, machines produced at an earlier date will not have the most recent version of kernels and applications.
Additionally, different customers may want to vary the kernels and applications that run on their purchased network appliance. However, the resources required to locally update the kernels and applications on each network appliance at each of these various remote locations is not economically feasible due to the large number of network appliances and their varied locations. For at least the reasons listed above, a practical method for updating kernel and application data without local access to the network appliance is sought.